跳到主要内容

BM43 包含min函数的栈

https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

主要的核心操作就是 minStack 必须和普通 Stack 那样,每插入一个元素就塞一个最小元素进去,因为它们的顺序是一样的,所以不用担心乱序的问题

package main

import (
"math"
)

var (
stack []int
minStack = []int{math.MaxInt64}
)

func Push(node int) {
stack = append(stack, node)
minNode := min(minStack[len(minStack)-1], node)
minStack = append(minStack, minNode)
}

func Pop() {
stack = stack[:len(stack)-1]
minStack = minStack[:len(minStack)-1]
}

func Top() int {
return stack[len(stack)-1]
}

func Min() int {
return minStack[len(minStack)-1]
}

func min(a, b int) int {
if a > b {
return b
}
return a
}